def format_user_message(data: dict) -> str:
    """
    将数据字典格式化为结构化的用户消息，使用XML风格的标签。
    
    此函数处理不同类型的输入数据并将其组织成OpenAI API可接受的格式。
    特别支持代码、文件和其他结构化内容的格式化。
    
    参数:
        data: 包含要格式化的数据的字典。可能包含以下键:
            - code: 代码片段
            - language: 代码语言
            - files: 文件列表，每个文件包含name和content
            - content: 主要内容文本
            - 其他键也会被处理
    
    返回:
        格式化后的消息字符串
    """
    
    # 创建一个空列表用于存储格式化后的各部分内容
    parts = []
    
    # 遍历数据字典中的每个键值对
    for key, value in data.items():
        # 根据不同的键名映射到相应的XML风格标签
        # 每种类型的数据都被包装在特定的标签中，便于AI模型理解和处理
        if key == "file_tree":
            # 文件树结构信息，用于展示项目的文件组织
            parts.append(f"<file_tree>\n{value}\n</file_tree>")
        elif key == "readme":
            # README文件内容，提供项目的基本说明
            parts.append(f"<readme>\n{value}\n</readme>")
        elif key == "explanation":
            # 解释性文本，提供额外的上下文或说明
            parts.append(f"<explanation>\n{value}\n</explanation>")
        elif key == "component_mapping":
            # 组件映射信息，描述组件之间的关系
            parts.append(f"<component_mapping>\n{value}\n</component_mapping>")
        elif key == "instructions":
            # 指令信息，提供给AI模型的具体任务要求
            parts.append(f"<instructions>\n{value}\n</instructions>")
        elif key == "diagram":
            # 图表数据，可能包含项目结构或关系的可视化表示
            parts.append(f"<diagram>\n{value}\n</diagram>")

    # 使用两个换行符连接所有部分，形成最终的格式化消息
    # 这种格式便于AI模型（如Claude、OpenAI和OpenRouter）解析和处理
    return "\n\n".join(parts)
